.TH std::span::subspan 3 "2024.06.10" "http://cppreference.com" "C++ Standard Libary"
.SH NAME
std::span::subspan \- std::span::subspan

.SH Synopsis
   template< std::size_t Offset,

             std::size_t Count = std::dynamic_extent >         \fB(1)\fP \fI(since C++20)\fP
   constexpr std::span<element_type, E /* see below */>

       subspan() const;
   constexpr std::span<element_type, std::dynamic_extent>

       subspan( size_type Offset,                              \fB(2)\fP \fI(since C++20)\fP

                size_type Count = std::dynamic_extent ) const;

   Obtains a span that is a view over the Count elements of this span starting at
   offset Offset. If Count is std::dynamic_extent, the number of elements in the
   subspan is size() - offset (i.e., it ends at the end of *this).

   1) Is ill-formed if
     * Offset is greater than Extent, or
     * Count is not std::dynamic_extent and Count is greater than Extent - Offset.

   The behavior is undefined if either Offset or Count is out of range. This happens if

     * Offset is greater than size(), or
     * Count is not std::dynamic_extent and Count is greater than size() - Offset.

   The extent E of the span returned by \fB(1)\fP is determined as follows:

     * If Count is not std::dynamic_extent, Count;
     * Otherwise, if Extent is not std::dynamic_extent, Extent - Offset;
     * Otherwise, std::dynamic_extent.

.SH Return value

   The requested subspan r, such that r.data() == this->data() + Offset. If Count is
   std::dynamic_extent, r.size() == this->size() - Offset; otherwise r.size() == Count.

.SH Example


// Run this code

 #include <algorithm>
 #include <cstdio>
 #include <numeric>
 #include <ranges>
 #include <span>

 void display(std::span<const char> abc)
 {
     const auto columns{20U};
     const auto rows{abc.size() - columns + 1};

     for (auto offset{0U}; offset < rows; ++offset)
     {
         std::ranges::for_each(abc.subspan(offset, columns), std::putchar);
         std::putchar('\\n');
     }
 }

 int main()
 {
     char abc[26];
     std::iota(std::begin(abc), std::end(abc), 'A');
     display(abc);
 }

.SH Output:

 ABCDEFGHIJKLMNOPQRST
 BCDEFGHIJKLMNOPQRSTU
 CDEFGHIJKLMNOPQRSTUV
 DEFGHIJKLMNOPQRSTUVW
 EFGHIJKLMNOPQRSTUVWX
 FGHIJKLMNOPQRSTUVWXY
 GHIJKLMNOPQRSTUVWXYZ

.SH See also

   first obtains a subspan consisting of the first N elements of the sequence
         \fI(public member function)\fP
   last  obtains a subspan consisting of the last N elements of the sequence
         \fI(public member function)\fP
